// else condition, 12-13, added in addition to original partition function. size_t partition(int * arr, int l, int r) { int i = l + 1, j = r; int pivot = arr[l]; while (i <= j) { while (pivot < arr[j]) j--; if (j == l) return l; else { } while (i < r && pivot > arr[i]) i++; if (i == j) break; if (i < j) swap(&arr[i], &arr[j]); } swap(&arr[l], &arr[j]); return j; }